use clickhouse::Row;
use serde::{Deserialize, Serialize};

#[derive(Row, Deserialize, Serialize)]
pub(super) struct PgFullColumnTypeTable {
    id: i32,
    char_col: Option<String>,
    char_col_2: Option<String>,
    character_col: Option<String>,
    character_col_2: Option<String>,
    varchar_col: Option<String>,
    varchar_col_2: Option<String>,
    character_varying_col: Option<String>,
    character_varying_col_2: Option<String>,
    bpchar_col: Option<String>,
    bpchar_col_2: Option<String>,
    text_col: Option<String>,
    // real_col: Option<f32>,
    // float4_col: Option<f32>,
    // double_precision_col: Option<f64>,
    // float8_col: Option<f64>,
    // numeric_col: Option<decimal::Decimal>,
    // numeric_col_2: Option<decimal::Decimal>,
    // decimal_col: Option<decimal::Decimal>,
    // decimal_col_2: Option<decimal::Decimal>,
    smallint_col: Option<i16>,
    int2_col: Option<i16>,
    smallserial_col: i16,
    serial2_col: i16,
    integer_col: Option<i32>,
    int_col: Option<i32>,
    int4_col: Option<i32>,
    serial_col: i32,
    serial4_col: i32,
    bigint_col: Option<i64>,
    int8_col: Option<i64>,
    bigserial_col: i64,
    serial8_col: i64,
    bit_col: Option<String>,
    bit_col_2: Option<String>,
    bit_varying_col: Option<String>,
    bit_varying_col_2: Option<String>,
    varbit_col: Option<String>,
    varbit_col_2: Option<String>,
    time_col: Option<String>,
    time_col_2: Option<String>,
    time_col_3: Option<String>,
    time_col_4: Option<String>,
    timez_col: Option<String>,
    timez_col_2: Option<String>,
    timez_col_3: Option<String>,
    timez_col_4: Option<String>,
    // timestamp_col: Option<chrono::NaiveDateTime>,
    // timestamp_col_2: Option<chrono::NaiveDateTime>,
    // timestamp_col_3: Option<chrono::NaiveDateTime>,
    // timestamp_col_4: Option<chrono::NaiveDateTime>,
    // timestampz_col: Option<chrono::NaiveDateTime>,
    // timestampz_col_2: Option<chrono::NaiveDateTime>,
    // timestampz_col_3: Option<chrono::NaiveDateTime>,
    // timestampz_col_4: Option<chrono::NaiveDateTime>,
    // date_col: Option<chrono::NaiveDate>,
    bytea_col: Option<String>,
    boolean_col: Option<bool>,
    bool_col: Option<bool>,
    json_col: Option<String>,
    jsonb_col: Option<String>,
    interval_col: Option<String>,
    interval_col_2: Option<String>,
    array_float4_col: Option<String>,
    array_float8_col: Option<String>,
    array_int2_col: Option<String>,
    array_int4_col: Option<String>,
    array_int8_col: Option<String>,
    array_int8_col_2: Option<String>,
    array_text_col: Option<String>,
    array_boolean_col: Option<String>,
    array_boolean_col_2: Option<String>,
    array_date_col: Option<String>,
    array_timestamp_col: Option<String>,
    array_timestamp_col_2: Option<String>,
    array_timestamptz_col: Option<String>,
    array_timestamptz_col_2: Option<String>,
    box_col: Option<String>,
    cidr_col: Option<String>,
    circle_col: Option<String>,
    inet_col: Option<String>,
    line_col: Option<String>,
    lseg_col: Option<String>,
    macaddr_col: Option<String>,
    macaddr8_col: Option<String>,
    money_col: Option<String>,
    path_col: Option<String>,
    pg_lsn_col: Option<String>,
    pg_snapshot_col: Option<String>,
    polygon_col: Option<String>,
    point_col: Option<String>,
    tsquery_col: Option<String>,
    tsvector_col: Option<String>,
    txid_snapshot_col: Option<String>,
    // uuid_col: Option<uuid::Uuid>,
    xml_col: Option<String>,
    // _ape_dts_is_deleted: i8,
    // _ape_dts_timestamp: i64,
}
